package controller;

import java.io.IOException;
import java.sql.SQLException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;



import model.Benutzer;
import model.Ebene;
import model.Gruppe;

/**
 * Dieses Servlet dient zum Anzeigen der Aufgaben des eingeloggten Benutzers.
 */
@WebServlet({ "/AufgabenListe", "/aufgabenliste", "/aufgabenliste.html",
		"/Aufgabenliste.html", "/Aufgaben", "/aufgaben", "/Aufgaben.html",
		"/aufgaben.html" })
public class AufgabenListe extends SessionControll {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#HttpServlet()
	 */
	public AufgabenListe() {
		super();
		// TODO Auto-generated constructor stub
	}

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");
		if (super.loginPruefen(request, response)) {
			Benutzer b = getAktuellerBenutzer(request, response);
			try {
				if (gruppenRepository.getGruppeNachId(Gruppe.DEZERNAT2).inGruppe(b.getId())) {
					Ebene[] ebene_dezernat2 = ebenenRepository.getDezernat2Aufgaben(b, 1);
					request.setAttribute("ebene_dezernat2", ebene_dezernat2);
				} else {
					request.setAttribute("ebene_dezernat2", null);
				}
			} catch (ClassNotFoundException e) {
				new helper.Logging("Fehler F020",e.toString(), benutzerRepository.getBenutzerNachEmail((String) request.getSession().getAttribute("email")), (byte)1);
				response.sendRedirect("Fehler?weiterleitung=AufgabenListe&fehler=Es konnte nicht auf die Datenbank zugegriffen werden! Bitte versuchen Sie es erneut oder kontaktieren Sie einen Administrator. (F020)");
			} catch (SQLException e) {
				new helper.Logging("Fehler F021",e.toString(), benutzerRepository.getBenutzerNachEmail((String) request.getSession().getAttribute("email")), (byte)1);
				response.sendRedirect("Fehler?weiterleitung=AufgabenListe&fehler=Es konnte nicht auf die Datenbank zugegriffen werden! Bitte versuchen Sie es erneut oder kontaktieren Sie einen Administrator. (F021)");
			}

			Ebene[] ebene_verantwortlich = null;
			Ebene[] ebene_redakteur = null;
			try {
				if(gruppenRepository.getGruppeNachId(Gruppe.ORDNUNGSEBENENVERANTWORTLICHER).inGruppe(b.getId())) {
					ebene_verantwortlich = ebenenRepository.getVerantwortlichAufgaben(b, 1);
				}
				if(gruppenRepository.getGruppeNachId(Gruppe.REDAKTEUR).inGruppe(b.getId())) {
					ebene_redakteur = ebenenRepository.getRedakteurAufgaben(b, 1);
				}

				request.setAttribute("ebene_verantwortlich", ebene_verantwortlich);
				request.setAttribute("ebene_redakteur", ebene_redakteur);

				RequestDispatcher view;
				view = request.getRequestDispatcher("AufgabenListe.jsp");
				view.forward(request, response);
			} catch (ClassNotFoundException e) {
				new helper.Logging("Fehler F022",e.toString(), benutzerRepository.getBenutzerNachEmail((String) request.getSession().getAttribute("email")), (byte)1);
				response.sendRedirect("Fehler?weiterleitung=AufgabenListe&fehler=Es konnte nicht auf die Datenbank zugegriffen werden! Bitte versuchen Sie es erneut oder kontaktieren Sie einen Administrator. (F022)");
			} catch (SQLException e) {
				new helper.Logging("Fehler F023",e.toString(), benutzerRepository.getBenutzerNachEmail((String) request.getSession().getAttribute("email")), (byte)1);
				response.sendRedirect("Fehler?weiterleitung=AufgabenListe&fehler=Es konnte nicht auf die Datenbank zugegriffen werden! Bitte versuchen Sie es erneut oder kontaktieren Sie einen Administrator. (F023)");
			}

		}

	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");
		if (super.loginPruefen(request, response)) {

		}
	}

}
